home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
textview.s
< prev
next >
Wrap
Text File
|
1998-09-27
|
49KB
|
2,424 lines
* textview.s
.include IOCSCALL.MAC
.include WebXpression.inc
.include draw_mouse.inc
.xdef _DispAll,_DispBack,_ClearText,_ClearText01
.xdef _TextVdisp
.xdef _ms_pos,_ms_pos_x,_ms_pos_y
.xdef _in_link_num
.xdef draw1_loop *! debug
.xref put_6x12_jt,put_12x12_jt
.xref put_8x16_jt,put_16x16_jt
.xref draw_mouse_cursor
.xref _disp_xptext
.xref _d_option,_hold_online
.xref _quit_flag,_freeze
.xref _from_network
.xref _color_mode,_config_color,_html_color
.xref _key_repeat_1st,_key_repeat_2nd
GVRAM equ $c0_0000
TEXTVRAM equ $e0_0000
TEXTPALET equ $e8_2200
CRTC_R12 equ $e8_0018
CRTC_R21 equ $e8_002a
CRTC_R22 equ $e8_002c
CRTC_R23 equ $e8_002e
CRTC_PORT equ $e8_0480 * CRTC ô«ì∞É▌ÆΦâ|ü[âg
GPIP_DATA equ $e8_8001
NEXT_LINE equ 128 * éPâëâCâôéáé╜éΦé╠âoâCâgÉö
DISP_Y equ 32 * ò\ĪìsÉö
DISP_X_OFFSET equ 8 * âXâNâìü[âïòöé≡é╕éτé╡é─ò\Īé╖éΘâIâtâZâbâg
OP_NON equ 0
OP_FORWARD equ 1
OP_BACKWARD equ 2
OP_FASTFORWARD equ 3
OP_FASTBACKWARD equ 4
OP_PAGEFORWARD equ 5
OP_PAGEBACKWARD equ 6
OP_PAGETOP equ 7
OP_PAGEEND equ 8
OP_OTHERS equ 255
MOUSE_MIN_X equ 8
MOUSE_MAX_X equ 768-8
MOUSE_MIN_Y equ 8
MOUSE_MAX_Y equ 512
.text
.even
****************************************************************
* éPìsò\Īâïü[â`âô
* æ¼ôxì┼ùDɵé╠é╜é▀âîâWâXâ^ò█æ╢é╚é╡üI
* âXü[âpü[é┼î─é╘é▒é╞
draw1: * in : a5.l = ìsè╟ù¥âeü[âuâï
* a2.l = ò\Īé╖éΘ TEXTVRAM ì╢Æ[é╠âAâhâîâX
* a3.l = ò\Īé╖éΘ GVRAM ì╢Æ[é╠âAâhâîâX
* d5.l = bit31 : = 1 Ä└ì█é╔ò\Īé╡é╚éóüiâhâbâgÉöé≡ÉöéªéΘé╛é»üj
* bit30~16 : â}âEâXâJü[â\âï X ì└òW
* bit15~0 = ò\Īé╖éΘ TEXTVRAM Åπé╠âhâbâgÉö 0~15
* image_table_ptr : xptexp->image_table é≡É▌ÆΦé╡é─é¿é¡é▒é╞
* link_table_ptr : xptexp->link_table é≡É▌ÆΦé╡é─é¿é¡é▒é╞
* out : d0.w = âèâôâNÆåé╚éτ =1 üid5.l<0 Ä₧üj
move.w CRTC_R21,-(sp)
move.w #%11_00010000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
movem.l a2-a3,a2_work * `Dxxx` `Gxxxx` é╠îvÄZé╔òKùv
move.w d5,d5_work * üV
move.w start_dot(a5),d7 * d7.w = ëµû╩ì╢Æ[é⌐éτé╠âhâbâgÉö
* üiÿ_ù¥éO : DISP_X_OFFSET é≡è▄é▄é╚éóüj
moveq.l #6,d6 * d6.w = âtâHâôâgâTâCâYüiæSèpé═é▒é╠éQö{üj
* b31 = ë║ÉⁿâtâëâO
movea.l ptr(a5),a4 * a4.l = âeâLâXâgé╓é╠â|âCâôâ^
movea.l a4,a3
adda.w num(a5),a3 * a3.l = é▒é▒é▄é┼Åêù¥é╖éΘ
clr.w in_link
move.l a4,d0 * öOé╠é╜é▀âGâëü[â`âFâbâN
beq draw1_err *
cmpa.l a4,a3 *
bls draw1_err *
add.w start_dot(a5),d5
@@: cmpi.w #16,d5
bcs @f
addq.w #2,a2
subi.w #16,d5
bra @b
@@:
draw1_loop:
cmpa.l #$e11000,a2 * öOé╠é╜é▀ a2.l é╠Ælé≡â`âFâbâN
bcc draw1_err2
moveq.l #0,d1
move.b (a4)+,d1 * d1.w = ò╢ÄÜâRü[âh
bpl draw1_ö╝èpæOö╝ * $00~$7f é═ö╝èpæOö╝
cmpi.b #$a0,d1
bcs @f
cmpi.b #$df,d1 * $a0-$df é═ö╝èpîπö╝
bls draw1_ö╝èpîπö╝
@@:
move.b d1,-(sp) * lsl.w #8,d1 éµéΦæ¼éóé┴é─ùßé╠âäâc
move.w (sp)+,d1 *
move.b (a4)+,d1 * d1.w = ò╢ÄÜâRü[âh
cmpi.w #$80ff,d1
bls draw1_éQâoâCâgö╝èp * $80xx é═éQâoâCâgö╝èp
cmpi.w #'êƒ',d1
bcs draw1_æSèpö±è┐ÄÜ
cmpi.w #'ÿƒ',d1
bcs draw1_æSèpæµéPÉàÅÇ
cmpi.w #'Ωó',d1
bls draw1_æSèpæµéQÉàÅÇ
cmpi.w #$f3ff,d1
bls draw1_éQâoâCâgö╝èp * $f0xx-$f3xx é═éQâoâCâgö╝èp
bra draw1_next * é▒é▒é╔é═ùêé╚éóânâY
**** ****
draw1_jmp: * âWâââôâvâeü[âuâïé╔Å]é┴é─ò¬è≥
* in : d0.w = âtâHâôâgÄφù▐
* a0.l = âWâââôâvâeü[âuâï
moveq.l #0,d0 *! debug
add.w d0,d0
move.w (a0,d0.w),d0
jmp (a0,d0.w) * ò¬è≥üiò¬è≥é╡é╜îπé═ draw1_next é╔ïAé┴é─é¡éΘüj
* out : d0.w = ò╢ÄÜé╠âhâbâgÉö
**** ****
draw1_next:
add.w d0,d5
add.w d0,d7
1: cmpi.w #16,d5
bcs 2f
addq.w #2,a2
subi.w #16,d5
bra 1b
2
tst.l d5
bpl 3f
* d5.l < 0 üiâhâbâgÉöÉöéªâéü[âhüjÄ₧é╠Åêù¥
move.l d5,d1
swap.w d1
andi.w #$7fff,d1
move.w d7,d0
add.w d5_work,d0
cmp.w d1,d0
bcs 3f
cmp.w start_dot(a5),d1 * â}âEâXâJü[â\âï X < start_dot é╛é┴é╜éτ
bcs 3f
move.w in_link,d0
bra draw1_rts
3:
cmpa.l a4,a3
bne draw1_loop
moveq.l #0,d0 * ìsé╠ëEÆ[ < â}âEâXâJü[â\âï X ì└òWé╚éτé═é╕éΩ
move.w d0,in_link
draw1_rts:
move.w (sp)+,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
rts
draw1_err:
moveq.l #0,d0 * ìsé╠ëEÆ[ < â}âEâXâJü[â\âï X ì└òWé╚éτé═é╕éΩ
move.w d0,in_link
bra draw1_rts
draw1_err2: *! debug
moveq.l #0,d0
move.w d0,in_link
move.b #125,_quit_flag * err_abort
bra draw1_rts
.bss
.even
a2_work: .ds.l 1
a3_work: .ds.l 1
d5_work: .ds.w 1
in_link: .ds.w 1
_in_link_num: .ds.w 1
link_table_ptr: .ds.l 1
image_table_ptr: .ds.l 1
gr_y: .ds.w 1 * GVRAM é╠ y ì└òW
g_work_image_no: .ds.w 1
g_work_hh: .ds.w 1
g_work_y_offset: .ds.l 1
g_work_disp_x: .ds.w 1
font_work: .ds.b 3*24 * ë║Éⁿé≡ê°éóé╜éΦé╖éΘÅêù¥ùpâÅü[âN
* 24x24 âhâbâgé▄é┼æσÅΣòvé╚ânâY
.text
.even
****************************************************************
draw1_ö╝èpæOö╝:
cmpi.b #$09,d1
beq draw1_tab
* cmpi.b #$0d,d1
* beq draw1_cr
* cmpi.b #$0a,d1
* beq draw1_lf
* cmpi.b #$1a,d1
* beq draw1_rts
cmpi.b #'`',d1
bne @f
cmpi.b #'`',(a4) * `` é╛é┴é╜ÅΩìçé═é╗é╠é▄é▄æfÆ╩éΦ
bne draw1_cmd * é╗éñé┼é╚é»éΩé╬ `Lnn` é╠éµéñé╚âRâ}âôâh
addq.w #1,a4 *
@@:
moveq.l #0,d0
* move.b dw_han0_font(a6),d0
moveq.l #0,d0 * âtâHâôâgÄφù▐
lea.l draw1_ö╝èpæOö╝_6x12_jt(pc),a0
cmpi.b #6,d6
beq draw1_jmp
lea.l draw1_ö╝èpæOö╝_8x16_jt(pc),a0
cmpi.b #8,d6
beq draw1_jmp
* lea.l draw1_ö╝èpæOö╝_mp_jt(pc),a0
bra draw1_jmp
draw1_tab:
sub.w start_dot(a5),d7
addi.w #6*8,d7 * tab é╠âhâbâgÉö
swap.w d7
clr.w d7 * öOé╠é╜é▀Åπê╩âÅü[âhé≡âNâèâA
swap.w d7
divu.w #6*8,d7
mulu.w #6*8,d7
swap.w d7
clr.w d7 * öOé╠é╜é▀Åπê╩âÅü[âhé≡âNâèâA
swap.w d7
add.w start_dot(a5),d7 * d7.w =
move.w d7,d5
add.w d5_work,d5
move.w d5,d0
lsr.w #4,d0
add.w d0,d0
movea.l a2_work,a2
adda.w d0,a2 * a2.w =
andi.w #15,d5 * d5.w =
moveq.l #0,d0
bra draw1_next
draw1_cmd:
moveq.l #0,d0 * draw1_next é╠ê°é½Éö
move.b (a4)+,d1
cmpi.b #'`',d1
beq draw1_next
cmpi.b #'S',d1
beq draw1_cmd_s
cmpi.b #'D',d1
beq draw1_cmd_d
cmpi.b #'L',d1
beq draw1_cmd_l
cmpi.b #'l',d1
beq draw1_cmd_ls
cmpi.b #'G',d1
beq draw1_cmd_g
cmpi.b #'U',d1
beq draw1_cmd_u
cmpi.b #'u',d1
beq draw1_cmd_us
cmpi.b #'E',d1
beq draw1_cmd_e
bra draw1_cmd
draw1_cmd_s: * `Sxx`
bsr get_word_num * d0.w = `Sx` é╠ÉöÆlòö
move.b d0,d6
bra draw1_cmd
draw1_cmd_d: * `Dxxx`
bsr get_word_num * d0.w = `Dxxx` é╠ÉöÆlòö
move.w d0,d5
add.w start_dot(a5),d5
move.w d5,d7 * d7.w =
add.w d5_work,d5
move.w d5,d0
lsr.w #4,d0
add.w d0,d0
movea.l a2_work,a2
adda.w d0,a2 * a2.w =
andi.w #15,d5 * d5.w =
bra draw1_cmd
draw1_cmd_l: * `L`
move.w #1,in_link
bsr get_word_num * d0.w = `Lxxxx` é╠ÉöÆlòö
tst.l d5
bmi draw1_cmd_l_count
* ò\ĪÄ₧
mulu.w #link_table_size,d0
movea.l link_table_ptr,a0
tst.b link_table_in_cache(a0,d0.w)
beq @f
move.w #%11_00010000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
bra draw1_cmd
@@: move.w #%11_00110000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiÉ╘é┼ò`ëµüj
bra draw1_cmd
draw1_cmd_l_count: * âhâbâgÉöéªâéü[âhÄ₧
move.w d0,_in_link_num
bra draw1_cmd
draw1_cmd_ls: * `l` l-small é╛é⌐éτ ls é╦
tst.l d5
bmi draw1_cmd_ls_count
* ò\ĪÄ₧
move.w #%11_00010000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiìòé┼ò`ëµüj
bra draw1_cmd
draw1_cmd_ls_count: * âhâbâgÉöéªâéü[âhÄ₧
clr.w in_link
clr.w _in_link_num
bra draw1_cmd
draw1_cmd_g: * `Gnnnn`
bsr get_word_num * d0.w = `Gnnnn` é╠ nnnnüiâCâüü[âWö╘ìåüj
addq.w #1,a4
move.w d0,d2
move.w d0,g_work_image_no
bsr get_word_num * d0.w = `Gnnnn,hh` é╠ hh
addq.w #1,a4
move.w d0,g_work_hh
bsr get_long_hex * d0.w = `Gnnnn,hh,yyyyyyyy` é╠ yyyyyyyy
move.l d0,g_work_y_offset
move.w d2,d0
tst.l d5
bmi draw1_cmd_g_count
movea.l image_table_ptr,a0
mulu.w #image_table_size,d0
movea.l image_table_image_list(a0,d0.l),a1 * a1.l = âCâüü[âWâèâXâg
move.w image_table_disp_x(a0,d0.l),d4 * d4.w = disp_x
move.w d4,g_work_disp_x
move.w CRTC_R21,-(sp) * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
move.w #%11_00100000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâXüiôºû╛é┼ò`ëµüj
* âeâLâXâgëµû╩é╔üuîèüvé≡èJé»éΘ
* üié▒é▒é⌐éτâOâëâtâBâbâNëµû╩é¬ôºé»é─î⌐éªéΘüj
tst.w d5
beq draw1_cmd_g_16
moveq.l #16,d0
sub.w d5,d0
cmp.w d0,d4
blt draw1_cmd_g_mini
sub.w d0,d4
move.w d5,d0
add.w d0,d0
lea.l draw1_cmd_g_mask,a0
move.w (a0,d0.w),CRTC_R23 * âeâLâXâgâ}âXâN
move.w g_work_hh,d0
mulu.w #6,d0
jmp @f(pc,d0.w)
@@:
.irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.w #-1,NEXT_LINE*%A.w(a2)
.endm
addq.w #2,a2
moveq.l #0,d5
bra draw1_cmd_g_16
draw1_cmd_g_mini: * éPë±é┼ò`ëµé┼é½é─16âhâbâgê╚ë║é╠ÅΩìç
move.w d4,d0
add.w d0,d0
lea.l draw1_cmd_g_mask,a0
move.w (a0,d0.w),d0
not.w d0
ror.w d5,d0
move.w d0,CRTC_R23 * âeâLâXâgâ}âXâN
move.w g_work_hh,d0
mulu.w #6,d0
jmp @f(pc,d0.w)
@@: .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.w #-1,NEXT_LINE*%A.w(a2)
.endm
add.w d4,d5
bra draw1_cmd_g_text_end
draw1_cmd_g_16:
clr.w CRTC_R23 * âeâLâXâgâ}âXâN
move.w g_work_hh,d0
mulu.w #6,d0
lea.l 2f(pc,d0.w),a0
1: cmpi.w #16,d4
blt draw1_cmd_g_last
jmp (a0)
2: .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.w #-1,NEXT_LINE*%A.w(a2)
.endm
addq.w #2,a2
subi.w #16,d4
bra 1b
draw1_cmd_g_last:
move.w d4,d0
add.w d0,d0
lea.l draw1_cmd_g_mask,a0
move.w (a0,d0.w),d0
not.w d0
move.w d0,CRTC_R23 * âeâLâXâgâ}âXâN
move.w g_work_hh,d0
mulu.w #6,d0
jmp @f(pc,d0.w)
@@: .irp %A,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
move.w #-1,NEXT_LINE*%A.w(a2)
.endm
move.w d4,d5
bra draw1_cmd_g_text_end
.data
.even
draw1_cmd_g_mask:
.dc.w %00000000_00000000
.dc.w %10000000_00000000
.dc.w %11000000_00000000
.dc.w %11100000_00000000
.dc.w %11110000_00000000
.dc.w %11111000_00000000
.dc.w %11111100_00000000
.dc.w %11111110_00000000
.dc.w %11111111_00000000
.dc.w %11111111_10000000
.dc.w %11111111_11000000
.dc.w %11111111_11100000
.dc.w %11111111_11110000
.dc.w %11111111_11111000
.dc.w %11111111_11111100
.dc.w %11111111_11111110
.text
.even
draw1_cmd_g_text_end:
* âOâëâtâBâbâNëµû╩é╔ò`ëµé╖éΘ
movem.l d1-d7/a0-a5,-(sp)
movea.l a3_work,a0
move.w d7,d0 * d0.w = ëµû╩ì╢Æ[é⌐éτé╠âhâbâgÉö
add.w d0,d0
adda.w d0,a0 * a0.l = ò\Īé╖éΘ GVRAM Åπé╠âAâhâîâX
movea.l image_list_data(a1),a2
cmpa.l #1,a2 * = !NULL é╠Ä₧é═âfü[â^é¬û│éó
beq draw1_cmd_g_clear * üiô╟é▀é╚é⌐é┴é╜é╞é⌐üj
move.l a2,d0 * = NULL é╠Ä₧éαâfü[â^é¬é╚éó
beq draw1_cmd_g_clear * üié▄é╛ô╟é±é┼éóé╚éóüj
adda.l g_work_y_offset,a2
move.w g_work_hh,d0
bne 1f
moveq.l #16-1,d2 * d2.w = âïü[âvë±Éö
bra 2f
1:
moveq.l #16-1,d2
sub.w d0,d2 * d2.w = âïü[âvë±Éö
mulu.w #512*2,d0
adda.l d0,a0
2:
draw1_cmd_g_trans_y_loop: * âOâëâtâBâbâNëµû╩é╔ô]æù
move.w g_work_disp_x,d0 * d0.w = disp_x
move.w d0,d1
lsr.w #5,d0
beq draw1_cmd_g_trans_x_2
subq.w #1,d0
draw1_cmd_g_trans_x_1:
movem.l (a2)+,d3-d7/a3-a5
movem.l d3-d7/a3-a5,(a0)
movem.l (a2)+,d3-d7/a3-a5
movem.l d3-d7/a3-a5,32(a0)
lea.l 64(a0),a0
dbra d0,draw1_cmd_g_trans_x_1
draw1_cmd_g_trans_x_2:
andi.w #31,d1
beq draw1_cmd_g_trans_x_4
subq.w #1,d1
draw1_cmd_g_trans_x_3:
move.w (a2)+,(a0)+
dbra d1,draw1_cmd_g_trans_x_3
draw1_cmd_g_trans_x_4:
move.w #512,d0
sub.w g_work_disp_x,d0
add.w d0,d0
adda.w d0,a0
move.w image_list_x(a1),d0
sub.w g_work_disp_x,d0
add.w d0,d0
adda.w d0,a2
dbra d2,draw1_cmd_g_trans_y_loop
draw1_cmd_g_rts:
movem.l (sp)+,d1-d7/a0-a5
move.w (sp)+,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
move.w g_work_image_no,d0
movea.l image_table_ptr,a0
mulu.w #image_table_size,d0
add.w image_table_disp_x(a0,d0.l),d7
bra draw1_cmd
* âfü[â^é¬é╚é⌐é┴é╜é╠é┼âOâëâtâBâbâNëµû╩é≡âNâèâA
draw1_cmd_g_clear:
move.w g_work_hh,d0
bne 1f
moveq.l #16-1,d2 * d2.w = âïü[âvë±Éö
bra 2f
1:
moveq.l #16-1,d2
sub.w d0,d2 * d2.w = âïü[âvë±Éö
mulu.w #512*2,d0
adda.l d0,a0
2:
moveq.l #0,d3
moveq.l #0,d4
moveq.l #0,d5
moveq.l #0,d6
moveq.l #0,d7
move.l d3,a3
move.l d3,a4
move.l d3,a5
draw1_cmd_g_clear_y_loop:
* move.w image_list_x(a1),d0
move.w g_work_disp_x,d0 * d0.w = disp_x
move.w d0,d1
lsr.w #5,d0
beq draw1_cmd_g_clear_x_2
subq.w #1,d0
draw1_cmd_g_clear_x_1:
movem.l d3-d7/a3-a5,(a0)
movem.l d3-d7/a3-a5,32(a0)
lea.l 64(a0),a0
dbra d0,draw1_cmd_g_clear_x_1
draw1_cmd_g_clear_x_2:
andi.w #31,d1
beq draw1_cmd_g_clear_x_4
subq.w #1,d1
draw1_cmd_g_clear_x_3:
move.w d3,(a0)+
dbra d1,draw1_cmd_g_clear_x_3
draw1_cmd_g_clear_x_4:
move.w #512,d0
* sub.w image_list_x(a1),d0
sub.w g_work_disp_x,d0
add.w d0,d0
adda.w d0,a0
move.w image_list_x(a1),d0
sub.w g_work_disp_x,d0
add.w d0,d0
adda.w d0,a2
dbra d2,draw1_cmd_g_clear_y_loop
bra draw1_cmd_g_rts
draw1_cmd_g_count: * âhâbâgÉöéªâéü[âh
move.w g_work_image_no,d0
movea.l image_table_ptr,a0
mulu.w #image_table_size,d0
movea.l image_table_image_list(a0,d0.l),a1 * a1.l = âCâüü[âWâèâXâg
move.w image_table_disp_x(a0,d0.l),d0 * d0.w = disp_x
add.w d0,d5
@@: cmpi.w #16,d5
bcs @f
addq.w #2,a2
subi.w #16,d5
bra @b
@@:
add.w d0,d7
bra draw1_cmd
draw1_cmd_u: * `U`
bset.l #31,d6
bra draw1_cmd
draw1_cmd_us: * `u`
bclr.l #31,d6
bra draw1_cmd
draw1_cmd_e: * `Exx`
bsr get_word_num * d0.w = `Exx` é╠ÉöÆlòö
tst.l d5 * âhâbâgÉöéªâéü[âhüH
bmi 9f
* bra 9f
lea.l extended_charcter,a1
lsl.w #5,d0
adda.w d0,a1
move.w d5,d0
lea.l put_16x16_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
9: moveq.l #16,d0 * ò╢ÄÜé╠âhâbâgÉö
addq.w #1,a4
bra draw1_next
**** ****
get_word_num: * ò╢ÄÜù±é≡ÉöÆlé╔ò╧è╖é╖éΘ
* in : a4.l = ò╢ÄÜù±é╠âAâhâîâX
* out : d0.w = ÉöÆl
* a4.l = ăé╠âAâhâîâX
movem.l d1,-(sp)
moveq.l #0,d0
@@: moveq.l #0,d1
move.b (a4)+,d1
cmpi.b #'0',d1
blt @f
cmpi.b #'9',d1
bgt @f
subi.b #'0',d1
mulu.w #10,d0
add.w d1,d0
bra @b
@@:
subq.w #1,a4
movem.l (sp)+,d1
rts
**** ****
get_long_hex: * 16Éiò╢ÄÜù±é≡ÉöÆlé╔ò╧è╖é╖éΘ
* in : a4.l = ò╢ÄÜù±üi16Éiüjé╠âAâhâîâX
* out : d0.l = ÉöÆl
* a4.l = ăé╠âAâhâîâX
movem.l d1,-(sp)
moveq.l #0,d0
1: moveq.l #0,d1
move.b (a4)+,d1
cmpi.b #'0',d1
blt 2f
cmpi.b #'9',d1
bgt 2f
subi.b #'0',d1
lsl.l #4,d0
add.l d1,d0
bra 1b
2:
cmpi.b #'a',d1
blt 3f
cmpi.b #'f',d1
bgt 3f
subi.b #'a',d1
addi.b #10,d1
lsl.l #4,d0
add.l d1,d0
bra 1b
3:
subq.w #1,a4
movem.l (sp)+,d1
rts
****************************************************************
draw1_ö╝èpîπö╝:
moveq.l #0,d0
bra draw1_next *!debug
.if 0
* moveq.l #0,d0
* move.b dw_han1_font(a6),d0
lea.l draw1_ö╝èpîπö╝_6x12_jt(pc),a0
* cmpi.w #12<<8|16,dw_x_size(a6)
* beq draw1_jmp
* lea.l draw1_ö╝èpîπö╝_mp_jt(pc),a0
bra draw1_jmp
.endif
****************************************************************
draw1_æSèpö±è┐ÄÜ:
* moveq.l #0,d0
* move.b dw_zen0_font(a6),d0
lea.l draw1_æSèpö±è┐ÄÜ_12x12_jt(pc),a0
cmpi.b #6,d6
beq draw1_jmp
lea.l draw1_æSèpö±è┐ÄÜ_16x16_jt(pc),a0
cmpi.b #8,d6
beq draw1_jmp
* lea.l draw1_æSèpö±è┐ÄÜ_mp_jt(pc),a0
bra draw1_jmp
draw1_æSèpæµéPÉàÅÇ:
* moveq.l #0,d0
* move.b dw_zen1_font(a6),d0
lea.l draw1_æSèpæµéPÉàÅÇ_12x12_jt(pc),a0
cmpi.b #6,d6
beq draw1_jmp
lea.l draw1_æSèpæµéPÉàÅÇ_16x16_jt(pc),a0
cmpi.b #8,d6
beq draw1_jmp
* lea.l draw1_æSèpæµéPÉàÅÇ_mp_jt(pc),a0
bra draw1_jmp
draw1_æSèpæµéQÉàÅÇ:
moveq.l #0,d0
* move.b dw_zen2_font(a6),d0
lea.l draw1_æSèpæµéQÉàÅÇ_12x12_jt(pc),a0
cmpi.b #6,d6
beq draw1_jmp
lea.l draw1_æSèpæµéQÉàÅÇ_16x16_jt(pc),a0
cmpi.b #8,d6
beq draw1_jmp
* lea.l draw1_æSèpæµéQÉàÅÇ_mp_jt(pc),a0
bra draw1_jmp
draw1_éQâoâCâgö╝èp:
moveq.l #0,d0
bra draw1_next *!debug
.if 0
moveq.l #0,d0
* move.b dw_han1_font(a6),d0
lea.l draw1_éQâoâCâgö╝èp_6x16_jt(pc),a0
* cmpi.w #12<<8|16,dw_x_size(a6)
* beq draw1_jmp
* lea.l draw1_éQâoâCâgö╝èp_mp_jt(pc),a0
bra draw1_jmp
.endif
*********************************************************
draw1_ö╝èpæOö╝_6x12_jt:
q = draw1_ö╝èpæOö╝_6x12_jt
.dc.w draw1_ö╝èpæOö╝_6x12_ROM12-q
* .dc.w draw1_ö╝èpæOö╝_6x12_ROM16-q
* .dc.w draw1_ö╝èpæOö╝_6x12_ROM24-q
draw1_ö╝èpæOö╝_6x12_ROM12: * ROM12 é╠ö╝èpæOö╝é≡ 6x12 é┼öCê╙é╠âAâhâîâXé╓Åæé¡
*draw1_ö╝èpîπö╝_6x12_ROM16: * ROM16 é╠ö╝èpîπö╝ üV
*draw1_ö╝èpîπö╝_6x12_ROM24: * ROM24 é╠ö╝èpîπö╝ üV
draw1_éQâoâCâgö╝èp_6x16_ROM12:
tst.l d5 * âhâbâgÉöéªâéü[âhüH
bmi 9f
moveq.l #6,d2 * 12x12 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
tst.l d6 * ë║ÉⁿüH
bpl 2f
* ë║Éⁿé╠Åêù¥üié╛é╣éªüj
lea.l font_work,a0
moveq.l #12-1-1,d0
1: move.b (a1)+,(a0)+
dbra d0,1b
move.b #-1,(a0)
lea.l font_work,a1
2:
lea.l NEXT_LINE*4(a2),a2 * ÅπéSâhâbâgé═ò`é⌐é╚éó
move.w d5,d0
lea.l put_6x12_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
9: moveq.l #6,d0 * ò╢ÄÜé╠âhâbâgÉö
lea.l -NEXT_LINE*4(a2),a2
bra draw1_next
*********************************************************
draw1_æSèpö±è┐ÄÜ_12x12_jt:
q = draw1_æSèpö±è┐ÄÜ_12x12_jt
.dc.w draw1_æSèpö±è┐ÄÜ_12x12_ROM12-q
* .dc.w draw1_æSèpö±è┐ÄÜ_12x12_ROM16-q
draw1_æSèpæµéPÉàÅÇ_12x12_jt:
q = draw1_æSèpæµéPÉàÅÇ_12x12_jt
.dc.w draw1_æSèpæµéPÉàÅÇ_12x12_ROM12-q
* .dc.w draw1_æSèpæµéPÉàÅÇ_12x12_ROM16-q
draw1_æSèpæµéQÉàÅÇ_12x12_jt:
q = draw1_æSèpæµéQÉàÅÇ_12x12_jt
.dc.w draw1_æSèpæµéQÉàÅÇ_12x12_ROM12-q
* .dc.w draw1_æSèpæµéQÉàÅÇ_12x12_ROM16-q
draw1_æSèpö±è┐ÄÜ_12x12_ROM12:
draw1_æSèpæµéPÉàÅÇ_12x12_ROM12
draw1_æSèpæµéQÉàÅÇ_12x12_ROM12
tst.l d5 * âhâbâgÉöéªâéü[âhüH
bmi 9f
moveq.l #6,d2 * 12x12 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
tst.l d6 * ë║ÉⁿüH
bpl 2f
* ë║Éⁿé╠Åêù¥üié╛é╣éªüj
lea.l font_work,a0
moveq.l #(12-1)*2-1,d0
1: move.b (a1)+,(a0)+
dbra d0,1b
move.b #-1,(a0)+
move.b #-1,(a0)+
lea.l font_work,a1
2:
lea.l NEXT_LINE*4(a2),a2 * ÅπéSâhâbâgé═ò`é⌐é╚éó
move.w d5,d0
lea.l put_12x12_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
9: move.w #12,d0 * ò╢ÄÜé╠âhâbâgÉö
lea.l -NEXT_LINE*4(a2),a2
bra draw1_next
*********************************************************
draw1_ö╝èpæOö╝_8x16_jt:
q = draw1_ö╝èpæOö╝_8x16_jt
.dc.w draw1_ö╝èpæOö╝_8x16_ROM12-q
* .dc.w draw1_ö╝èpæOö╝_8x16_ROM16-q
* .dc.w draw1_ö╝èpæOö╝_8x16_ROM24-q
draw1_ö╝èpæOö╝_8x16_ROM12: * ROM12 é╠ö╝èpæOö╝é≡ 8x16 é┼öCê╙é╠âAâhâîâXé╓Åæé¡
*draw1_ö╝èpîπö╝_8x16_ROM16: * ROM16 é╠ö╝èpîπö╝ üV
*draw1_ö╝èpîπö╝_8x16_ROM24: * ROM24 é╠ö╝èpîπö╝ üV
*draw1_éQâoâCâgö╝èp_6x16_ROM12:
tst.l d5 * âhâbâgÉöéªâéü[âhüH
bmi 9f
moveq.l #8,d2 * 16x16 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
tst.l d6 * ë║ÉⁿüH
bpl 2f
* ë║Éⁿé╠Åêù¥üié╛é╣éªüj
lea.l font_work,a0
moveq.l #16-1-1,d0
1: move.b (a1)+,(a0)+
dbra d0,1b
move.b #-1,(a0)
lea.l font_work,a1
2:
move.w d5,d0
lea.l put_8x16_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
9: moveq.l #8,d0 * ò╢ÄÜé╠âhâbâgÉö
bra draw1_next
****************************************************************
draw1_æSèpö±è┐ÄÜ_16x16_jt:
q = draw1_æSèpö±è┐ÄÜ_16x16_jt
.dc.w draw1_æSèpö±è┐ÄÜ_16x16_ROM12-q
* .dc.w draw1_æSèpö±è┐ÄÜ_16x16_ROM16-q
draw1_æSèpæµéPÉàÅÇ_16x16_jt:
q = draw1_æSèpæµéPÉàÅÇ_16x16_jt
.dc.w draw1_æSèpæµéPÉàÅÇ_16x16_ROM12-q
* .dc.w draw1_æSèpæµéPÉàÅÇ_16x16_ROM16-q
draw1_æSèpæµéQÉàÅÇ_16x16_jt:
q = draw1_æSèpæµéQÉàÅÇ_16x16_jt
.dc.w draw1_æSèpæµéQÉàÅÇ_16x16_ROM12-q
* .dc.w draw1_æSèpæµéQÉàÅÇ_16x16_ROM16-q
draw1_æSèpö±è┐ÄÜ_16x16_ROM12:
draw1_æSèpæµéPÉàÅÇ_16x16_ROM12
draw1_æSèpæµéQÉàÅÇ_16x16_ROM12
tst.l d5 * âhâbâgÉöéªâéü[âhüH
bmi 9f
moveq.l #8,d2 * 16x16 dot
IOCS _FNTADR
movea.l d0,a1 * a1.l = âtâHâôâgâAâhâîâX
tst.l d6 * ë║ÉⁿüH
bpl 2f
* ë║Éⁿé╠Åêù¥üié╛é╣éªüj
lea.l font_work,a0
moveq.l #(16-1)*2-1,d0
1: move.b (a1)+,(a0)+
dbra d0,1b
move.b #-1,(a0)+
move.b #-1,(a0)+
lea.l font_work,a1
2:
move.w d5,d0
lea.l put_16x16_jt(pc),a0
add.w d0,d0
move.w (a0,d0.w),d0
jsr (a0,d0.w)
9: moveq.l #16,d0 * ò╢ÄÜé╠âhâbâgÉö
bra draw1_next
****************************************************************
* É│ò√îⁿÆßæ¼âXâNâìü[âï
ScrollForward:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l 8(a6),d0
beq ScrollForward_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_current_line(a4),d0
addi.l #DISP_Y,d0
cmp.l xptext_line(a4),d0
bge ScrollForward_rts
move.l xptext_image_table(a4),image_table_ptr
move.l xptext_link_table(a4),link_table_ptr
* âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
move.l xptext_current_line(a4),d0
addq.l #1,xptext_current_line(a4)
addi.l #DISP_Y,d0
mulu.w #size_of_line_ptr,d0
movea.l xptext_line_ptr(a4),a5
adda.w d0,a5 * a5.l = ò\Īé╖éΘ line_ptr
lea.l TEXTVRAM+NEXT_LINE*32*16,a2
move.w gr_y,d0
mulu.w #512*2,d0
lea.l GVRAM,a3
adda.l d0,a3
moveq.l #DISP_X_OFFSET,d5
movem.l a6,-(sp)
bsr draw1
movem.l (sp)+,a6
move.b #4,last_op_counter
bsr ScrollForward_continue
ScrollForward_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
ScrollForward_continue: * æSæ╠é≡âXâNâìü[âïâAâbâv
move.w gr_y,d0
addi.w #4,d0
andi.w #511,d0
bsr set_gr_y
move.w #1<<8|0,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
move.w #(DISP_Y+1)*4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%0011,d3
IOCS _TXRASCPY
subq.b #1,last_op_counter
bne @f
* âÅü[âNùp TEXTVRAM é≡âNâèâA
move.w #(128+4)<<8|128,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%1111,d3
IOCS _TXRASCPY
@@:
rts
****************************************************************
* ïtò√îⁿÆßæ¼âXâNâìü[âï
ScrollBackward:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l 8(a6),d0
beq ScrollBackward_rts
movea.l d0,a4 * a4.l = &xp_text
tst.l xptext_current_line(a4)
beq ScrollBackward_rts
move.l xptext_image_table(a4),image_table_ptr
move.l xptext_link_table(a4),link_table_ptr
* âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
move.l xptext_current_line(a4),d0
subq.l #1,xptext_current_line(a4)
subq.l #1,d0
mulu.w #size_of_line_ptr,d0
movea.l xptext_line_ptr(a4),a5
adda.w d0,a5 * a5.l = ò\Īé╖éΘ line_ptr
lea.l TEXTVRAM+NEXT_LINE*32*16,a2
move.w gr_y,d0
addi.w #(DISP_Y-1)*16,d0
andi.w #511,d0
mulu.w #512*2,d0
lea.l GVRAM,a3
adda.l d0,a3
moveq.l #DISP_X_OFFSET,d5
movem.l a6,-(sp)
bsr draw1
movem.l (sp)+,a6
move.w #(128+4-1)<<8|0,back_work
move.b #4,last_op_counter
bsr ScrollBackward_continue
ScrollBackward_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
ScrollBackward_continue: * æSæ╠é≡âXâNâìü[âïâ_âEâô
move.w back_work,d4 * d4.w = ô]æùî│<<8|ô]æùɵ
1:
move.w gr_y,d0
subi.w #4,d0
andi.w #511,d0
bsr set_gr_y
move.w #(DISP_Y*4-2)<<8|DISP_Y*4-1,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
move.w #DISP_Y*4-1,d2 * d2.w = âRâsü[ë±Éö
move.w #%10000000_00000011,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
move.w d4,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #1,d2 * d2.w = âRâsü[ë±Éö
move.w #%00000000_00000011,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
subi.w #(1<<8),d4
move.w d4,back_work
subq.b #1,last_op_counter
bne @f
* âÅü[âNùp TEXTVRAM é≡âNâèâA
move.w #(128+4)<<8|128,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%1111,d3
IOCS _TXRASCPY
@@:
rts
back_work:
.ds.w 1
****************************************************************
* É│ò√îⁿìéæ¼âXâNâìü[âï
ScrollFastForward:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l 8(a6),d0
beq ScrollForward_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_current_line(a4),d0
addi.l #DISP_Y,d0
cmp.l xptext_line(a4),d0
bge ScrollFastForward_rts
move.l xptext_image_table(a4),image_table_ptr
move.l xptext_link_table(a4),link_table_ptr
* âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
move.l xptext_current_line(a4),d0
addq.l #1,xptext_current_line(a4)
addi.l #DISP_Y,d0
mulu.w #size_of_line_ptr,d0
movea.l xptext_line_ptr(a4),a5
adda.w d0,a5 * a5.l = ò\Īé╖éΘ line_ptr
lea.l TEXTVRAM+NEXT_LINE*32*16,a2
move.w gr_y,d0
mulu.w #512*2,d0
lea.l GVRAM,a3
adda.l d0,a3
moveq.l #DISP_X_OFFSET,d5
movem.l a6,-(sp)
bsr draw1
movem.l (sp)+,a6
* æSæ╠é≡âXâNâìü[âïâAâbâv
move.w gr_y,d0
addi.w #16,d0
andi.w #511,d0
bsr set_gr_y
move.w #4<<8|0,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
move.w #(DISP_Y+1)*4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%0011,d3
IOCS _TXRASCPY
* âÅü[âNùp TEXTVRAM é≡âNâèâA
move.w #(128+4)<<8|128,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%1111,d3
IOCS _TXRASCPY
ScrollFastForward_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
****************************************************************
* ïtò√îⁿìéæ¼âXâNâìü[âï
ScrollFastBackward:
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l 8(a6),d0
beq ScrollBackward_rts
movea.l d0,a4 * a4.l = &xp_text
tst.l xptext_current_line(a4)
beq ScrollFastBackward_rts
move.l xptext_image_table(a4),image_table_ptr
move.l xptext_link_table(a4),link_table_ptr
* âÅü[âNòö TEXTVRAM é╔éPìsò`ëµ
move.l xptext_current_line(a4),d0
subq.l #1,d0
move.l d0,xptext_current_line(a4)
mulu.w #size_of_line_ptr,d0
movea.l xptext_line_ptr(a4),a5
adda.w d0,a5 * a5.l = ò\Īé╖éΘ line_ptr
lea.l TEXTVRAM+NEXT_LINE*32*16,a2
move.w gr_y,d0
addi.w #(DISP_Y-1)*16,d0
andi.w #511,d0
mulu.w #512*2,d0
lea.l GVRAM,a3
adda.l d0,a3
moveq.l #DISP_X_OFFSET,d5
movem.l a6,-(sp)
bsr draw1
movem.l (sp)+,a6
* æSæ╠é≡âXâNâìü[âïâ_âEâô
move.w gr_y,d0
subi.w #16,d0
andi.w #511,d0
bsr set_gr_y
move.w #((DISP_Y-1)*4-1)<<8|DISP_Y*4-1,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
move.w #(DISP_Y-1)*4,d2 * d2.w = âRâsü[ë±Éö
move.w #%10000000_00000011,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
move.w #128<<8|0,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #4,d2 * d2.w = âRâsü[ë±Éö
move.w #%00000000_00000011,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
* âÅü[âNùp TEXTVRAM é≡âNâèâA
move.w #(128+4)<<8|128,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
moveq.l #4,d2 * d2.w = âRâsü[ë±Éö
moveq.l #%1111,d3
IOCS _TXRASCPY
ScrollFastBackward_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
****************************************************************
PageForward: * éPëµû╩Éié▐
link a6,#0
movem.l d1/a4,-(sp)
move.l 8(a6),d0
beq PageForward_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_current_line(a4),d0
addi.l #DISP_Y,d0
move.l xptext_line(a4),d1
subi.l #DISP_Y,d1
ble PageForward_rts
cmp.l d1,d0
beq PageForward_rts
blt @f
move.l d1,d0
@@:
cmp.l xptext_current_line(a4),d0
beq PageForward_rts
move.l d0,xptext_current_line(a4)
pea.l (a4)
bsr _DispAll
addq.w #4,sp
PageForward_rts:
movem.l (sp)+,d1/a4
unlk a6
rts
****************************************************************
PageBackward: * éPëµû╩û▀éΘ
link a6,#0
movem.l a4,-(sp)
move.l 8(a6),d0
beq PageBackward_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_current_line(a4),d0
beq PageBackward_rts
subi.l #DISP_Y,d0
bpl @f
moveq.l #0,d0
@@:
cmp.l xptext_current_line(a4),d0
beq PageBackward_rts
move.l d0,xptext_current_line(a4)
pea.l (a4)
bsr _DispAll
addq.w #4,sp
PageBackward_rts:
movem.l (sp)+,a4
unlk a6
rts
****************************************************************
PageTop: * âyü[âWé╠ɵô¬é╔
link a6,#0
movem.l a4,-(sp)
move.l 8(a6),d0
beq PageTop_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_current_line(a4),d0
beq PageTop_rts
clr.l xptext_current_line(a4)
pea.l (a4)
bsr _DispAll
addq.w #4,sp
PageTop_rts:
movem.l (sp)+,a4
unlk a6
rts
****************************************************************
PageEnd: * âyü[âWé╠ûûö÷é╔
link a6,#0
movem.l a4,-(sp)
move.l 8(a6),d0
beq PageEnd_rts
movea.l d0,a4 * a4.l = &xp_text
move.l xptext_line(a4),d0
subi.l #DISP_Y,d0
cmp.l xptext_current_line(a4),d0
beq PageEnd_rts
move.l d0,xptext_current_line(a4)
pea.l (a4)
bsr _DispAll
addq.w #4,sp
PageEnd_rts:
movem.l (sp)+,a4
unlk a6
rts
****************************************************************
* éPëµû╩ò\Īâïü[â`âô
_DispAll: * in : 4(sp).l = xp_text é╠âAâhâîâX
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
move.l 8(a6),d0
beq DispAll_rts
movea.l d0,a4 * a4.l = &xp_text
bsr _ClearText01
* âXâNâìü[âïòöé╠âpâîâbâgé≡É▌ÆΦ
lea.l _config_color,a0
tst.b _color_mode
beq @f
lea.l _html_color,a0
@@: lea.l TEXTPALET,a1
move.w (a0)+,(a1)+
move.w (a0)+,(a1)+
addq.w #2,a0
addq.w #2,a1
move.w (a0)+,(a1)+
lea.l TEXTVRAM,a2
move.l xptext_current_line(a4),d0
move.l d0,d1
mulu.w #size_of_line_ptr,d0
movea.l xptext_line_ptr(a4),a5
adda.w d0,a5 * a5.l = ò\Īé╖éΘ line_ptr
lea.l GVRAM,a3
moveq.l #0,d0
bsr set_gr_y
move.l xptext_image_table(a4),image_table_ptr
move.l xptext_link_table(a4),link_table_ptr
moveq.l #DISP_Y-1,d2
DispAll_loop: * ìsÉöé╘é±âïü[âv
cmp.l xptext_line(a4),d1
bge DispAll_end
addq.l #1,d1
moveq.l #DISP_X_OFFSET,d5 * é╕éτé╡é─ò\Ī
movem.l d1-d2/a2-a5,-(sp)
bsr draw1
movem.l (sp)+,d1-d2/a2-a5
lea.l NEXT_LINE*16(a2),a2
lea.l 512*2*16(a3),a3
lea.l size_of_line_ptr(a5),a5
dbra d2,DispAll_loop
DispAll_end:
DispAll_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
****************************************************************
_DispBack: * öwîié≡ò`ëµ
movem.l d0-d2/a0-a1,-(sp)
suba.l a1,a1 * âXü[âpü[é╔
IOCS _B_SUPER
move.l d0,-(sp)
lea.l TEXTVRAM,a0
moveq.l #4-1,d1
DispBack_yloop:
* * ì╢Æ[é╠âoü[
* move.w #%1_01000000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
* move.b #-1,(a0)+
move.b #0,(a0)+
* âXâNâìü[âïòöé≡âXâLâbâv
lea.l 512/8(a0),a0
move.b #0,(a0)+
* î┼ÆΦòöé≡ò`é¡
move.w #%1_01000000,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
move.w #256/8-1,d2
moveq.l #-1,d0
@@: move.b d0,(a0)+
dbra d2,@b
lea.l 256/8-2(a0),a0
dbra d1,DispBack_yloop
* éáé╞é═âëâXâ^ü[âRâsü[
move.w #512/4+3*4-1,d4
move.w #0<<8|1,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
@@: moveq.l #1,d2 * d2.w = âRâsü[ë±Éö
move.w #%00000000_00001111,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
addq.w #1,d1
dbra d4,@b
move.w #0,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
movea.l (sp)+,a1
IOCS _B_SUPER
movem.l (sp)+,d0-d2/a0-a1
rts
****************************************************************
****************************************************************
_TextVdisp: * ÉéÆ╝ô»è·èäéΦì₧é▌é┼Ä└ìsé│éΩéΘâïü[â`âô
tst.b in_vdisp * ô±Ådé╔ÉéÆ╝ô»è·èäéΦì₧é▌é¬é⌐é⌐é┴é╜ÅΩìçé═
bne TextVdisp_rts_9 * ë╜éαé╡é╚éó
tst.b _freeze * xptext ìXÉVÆåé╔é┬é½ò`ëµï╓Ä~
bne TextVdisp_rts_9 * ë╜éαé╡é╚éó
st.b in_vdisp
movem.l d0-d7/a0-a6,-(sp)
tst.b _hold_online
beq @f
tst.b _from_network
beq @f
bsr check_key2
bra TextVdisp_rts
@@:
tst.b last_op_counter
bne last_op_continue
bsr check_mouse
bne @f
bsr check_key
@@:
TextVdisp_rts:
movem.l (sp)+,d0-d7/a0-a6
sf.b in_vdisp
TextVdisp_rts_9:
sf.b vdisp_flag
rte
*********************************************************
check_mouse: * â}âEâXâJü[â\âïÅêù¥
* out : d0.l & flag = 0 : æÇì∞é│éΩé╚é⌐é┴é╜
* reg : a6-a7 ê╚èOöjë≤
clr.b last_op_counter
moveq.l #0,d7 * ò╘éΦÆl
IOCS _MS_GETDT
move.l d0,d3 * d3.l =
move.l _ms_pos,old_ms_pos
* â}âEâXâJü[â\âïé≡ê┌ô«é╖éΘ
move.l _ms_pos,d1 * d1.l =
swap.w d1
swap.w d0
asr.w #8,d0
add.w d0,d1
cmpi.w #MOUSE_MIN_X,d1
bgt 1f * ê┌ô«ö═ê═é≡ɺî└
move.w #MOUSE_MIN_X,d1
bra 2f
1: cmpi.w #MOUSE_MAX_X,d1
ble 2f
move.w #MOUSE_MAX_X,d1
2:
swap.w d1
move.l d3,d0
swap.w d0
ext.w d0
add.w d0,d1
cmpi.w #MOUSE_MIN_Y,d1
bgt 1f * ê┌ô«ö═ê═é≡ɺî└
move.w #MOUSE_MIN_Y,d1
bra 2f
1: cmpi.w #MOUSE_MAX_Y,d1
ble 2f
move.w #MOUSE_MAX_Y,d1
2: move.l d1,_ms_pos
* â}âEâXâJü[â\âïé╠ì└òWé╔éµé┴é─ò¬è≥
move.l d1,d0
swap.w d0
cmpi.w #512+8,d0
ble check_mouse_scroll
* cmpi.w #512+8+12,d0
* ble check_mouse_scbar
bra check_mouse_panel
check_mouse_scroll: * â}âEâXâJü[â\âïé¬âXâNâìü[âïòöé╔éáéΘ
* â}âEâXé╠â{â^âôé╠Å≤æ╘é╔ë₧é╢é─ò¬è≥
tst.w d3 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
bmi check_mouse_msldown
tst.b d3 * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
bne check_mouse_msrdown
* â}âEâXù╝â{â^âôé¬ùúé│éΩé─éóéΘÄ₧
bsr get_mouse_pat * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
check_mouse_rts: * æÇì∞é│éΩé─ÅIù╣
cmp.w old_mouse_pat,d0 * æOé╞ô»é╢âpâ^ü[âôé⌐üH
bne 1f
move.l old_ms_pos,d1
cmp.l _ms_pos,d1 * â}âEâXâJü[â\âïé¬ê┌ô«é╡é╜é⌐üH
beq 2f
1: move.w d0,old_mouse_pat
bsr draw_mouse_cursor
2:
move.l d7,d0
rts
check_mouse_msldown:
moveq.l #-1,d7
tst.b d3 * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
bne check_mouse_mslrdown
* â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜Ä₧
moveq.l #$e,d1
IOCS _BITSNS
btst.l #0,d0 * [SHIFT]
bne check_mouse_msldown_page
move.b last_op,d0
cmpi.b #OP_FORWARD,d0
beq check_mouse_msldown_lf
cmpi.b #OP_FASTFORWARD,d0
beq check_mouse_msldown_lff
bsr get_mouse_pat * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
tst.w in_link
bne check_mouse_msldown_in_link
* âèâôâNÅπé╔é╚éóÅΩìçé═âXâNâìü[âï
bsr check_exec_scroll_forward
moveq.l #PAT_SCROLL_F,d0
bra check_mouse_rts
check_mouse_msldown_in_link: * âèâôâNÅπé╔éáéΘÅΩìç
move.b #QUIT_LINK,_quit_flag * âèâôâNé┼ÅIù╣
move.b #OP_NON,last_op
moveq.l #PAT_POINTER,d0
bra check_mouse_rts
check_mouse_msldown_lf: * æOë±É│ò√îⁿâXâNâìü[âïé╡é─ìíë±éαì╢â{â^âôé¬ëƒé│éΩé─éóéΘ
move.w _ms_pos_y,d0 * â}âEâXé¬ë║é╔âhâëâbâOé│éΩé╜üH
cmp.w old_ms_pos_y,d0 *
bgt check_mouse_msldown_lff_1 *
check_mouse_msldown_lf_1:
bsr check_exec_scroll_forward
moveq.l #PAT_SCROLL_F,d0
bra check_mouse_rts
check_mouse_msldown_lff: * æOë±É│ò√îⁿìéæ¼âXâNâìü[âïé╡é─ìíë±éαì╢â{â^âôé¬ëƒé│éΩé─éóéΘ
move.w _ms_pos_y,d0 * â}âEâXé¬Åπé╔âhâëâbâOé│éΩé╜üH
cmp.w old_ms_pos_y,d0 *
blt check_mouse_msldown_lf_1 *
check_mouse_msldown_lff_1:
bsr check_exec_scroll_fast_forward
moveq.l #PAT_SCROLL_FF,d0
bra check_mouse_rts
check_mouse_msldown_page:
bsr check_exec_page_forward
moveq.l #PAT_SCROLL_FF,d0
bra check_mouse_rts
check_mouse_msrdown: * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜Ä₧
moveq.l #-1,d7
moveq.l #$e,d1
IOCS _BITSNS
btst.l #0,d0 * [SHIFT]
bne check_mouse_msrdown_page
move.b last_op,d0
cmpi.b #OP_BACKWARD,d0
beq check_mouse_msrdown_lb
cmpi.b #OP_FASTBACKWARD,d0
beq check_mouse_msrdown_lfb
bsr get_mouse_pat * ò╘éΦÆl : d0.w = â}âEâXâpâ^ü[âôö╘ìå
tst.w in_link
bne check_mouse_msrdown_in_link
* âèâôâNÅπé╔é╚éóÅΩìçé═âXâNâìü[âï
bsr check_exec_scroll_backward
moveq.l #PAT_SCROLL_B,d0
bra check_mouse_rts
check_mouse_msrdown_in_link: * âèâôâNÅπé╔éáéΘÅΩìç
* bsr menu_in_link *! debug âèâôâNÅπé┼âüâjâàü[é≡Åoé╖Åêù¥é¬ôⁿéΘù\ÆΦ
move.b #OP_NON,last_op
moveq.l #PAT_POINTER,d0
bra check_mouse_rts
check_mouse_msrdown_lb: * æOë±ïtò√îⁿâXâNâìü[âïé╡é─ìíë±éαëEâ{â^âôé¬ëƒé│éΩé─éóéΘ
move.w _ms_pos_y,d0 * â}âEâXé¬Åπé╔âhâëâbâOé│éΩé╜üH
cmp.w old_ms_pos_y,d0 *
blt check_mouse_msrdown_lfb_1 *
check_mouse_msrdown_lb_1:
bsr check_exec_scroll_backward
moveq.l #PAT_SCROLL_B,d0
bra check_mouse_rts
check_mouse_msrdown_lfb: * æOë±ïtò√îⁿìéæ¼âXâNâìü[âïé╡é─ìíë±éαëEâ{â^âôé¬ëƒé│éΩé─éóéΘ
move.w _ms_pos_y,d0 * â}âEâXé¬ë║é╔âhâëâbâOé│éΩé╜üH
cmp.w old_ms_pos_y,d0 *
bgt check_mouse_msrdown_lb_1 *
check_mouse_msrdown_lfb_1:
bsr check_exec_scroll_fast_backward
moveq.l #PAT_SCROLL_FB,d0
bra check_mouse_rts
check_mouse_msrdown_page:
bsr check_exec_page_backward
moveq.l #PAT_SCROLL_FB,d0
bra check_mouse_rts
check_mouse_mslrdown: * â}âEâXù╝â{â^âôé¬ëƒé│éΩé╜Ä₧
move.b #QUIT_RETURN,_quit_flag * éPé┬æOé╔û▀éΘ
move.b #OP_NON,last_op
moveq.l #PAT_POINTER,d0
bra check_mouse_rts
check_mouse_panel:
lea.l button_table,a0
1: move.l 8(a0),d2 * d2.l = Åêù¥âAâhâîâX
beq check_mouse_panel_rts
cmp.w (a0),d0
blt 2f
cmp.w 4(a0),d0
bgt 2f
cmp.w 2(a0),d1
blt 2f
cmp.w 6(a0),d1
bgt 2f
movem.l a1,-(sp)
movea.l d2,a1
jsr (a1)
movem.l (sp)+,a1
moveq.l #-1,d7
bra check_mouse_panel_rts
2:
lea.l 12(a0),a0
bra 1b
check_mouse_panel_rts:
moveq.l #PAT_POINTER,d0
bra check_mouse_rts
check_button_scroll:
.if 0
* â{â^âôÿgö╜ô]ï@ö\é═ÄEé╡é─é¿é¡
moveq.l #-1,d0
bsr draw_mouse_cursor
move.l (a0),-(sp)
move.l 4(a0),-(sp)
bsr reverse_button * â{â^âôÿgé≡ö╜ô]
lea.l 8(sp),sp
moveq.l #PAT_POINTER,d0
bsr draw_mouse_cursor
.endif
tst.w d3 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
bmi 1f
tst.b d3 * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
bne 2f
rts
1: bsr check_exec_scroll_forward
rts
2: bsr check_exec_scroll_backward
rts
check_button_page:
tst.w d3 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
bmi 1f
tst.b d3 * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
bne 2f
rts
1: bsr check_exec_page_forward
rts
2: bsr check_exec_page_backward
rts
check_button_topend:
tst.w d3 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
bmi 1f
tst.b d3 * â}âEâXëEâ{â^âôé¬ëƒé│éΩé╜é⌐üH
bne 2f
rts
1: bsr check_exec_page_end
rts
2: bsr check_exec_page_top
rts
check_button_break:
tst.w d3 * â}âEâXì╢â{â^âôé¬ëƒé│éΩé╜é⌐üH
bmi 1f
rts
1:
move.b #QUIT_EXIT,_quit_flag * â}âEâXù╝â{â^âôé¬ëƒé│éΩé─ÅIù╣
rts
*********************************************************
check_key: * âLü[ôⁿù═é┼ÄwÆΦé╠âïü[â`âôé╔ò¬è≥
moveq.l #7,d1
IOCS _BITSNS
add.b d0,d0 * [CLR]
bcs check_key_clr
add.b d0,d0 * [ü½]
bcs check_key_down
add.b d0,d0 * [ü¿]
bcs check_key_right
add.b d0,d0 * [ü¬]
bcs check_key_up
add.b d0,d0 * [ü⌐]
bcs check_key_left
add.b d0,d0 * [UNDO]
bcs check_key_undo
add.b d0,d0 * [ROLL DOWN]
bcs check_key_rolldown
add.b d0,d0 * [ROLL UP]
bcs check_key_rollup
*! debug
moveq.l #4,d1
IOCS _BITSNS
btst.l #0,d0 * [D]
bne check_key_dump
moveq.l #3,d1
IOCS _BITSNS
btst.l #2,d0 * [P]
bne check_key_process
*! é▒é▒é▄é┼âfâoâbâOùp
moveq.l #$a,d1
IOCS _BITSNS
btst.l #3,d0 * [ôoÿ^]
bne check_key_touroku
btst.l #5,d0 * [XF1]
bne check_key_xf1
moveq.l #$c,d1
IOCS _BITSNS
btst.l #1,d0 * [BREAK]
bne check_key_break
btst.l #3,d0 * [F1]
bne check_key_f1
btst.l #4,d0 * [F2]
bne check_key_f2
moveq.l #0,d1
IOCS _BITSNS
btst.l #1,d0 * [ESC]
bne check_key_esc
btst.l #2,d0 * [1]
bne check_key_shell
moveq.l #6,d1
IOCS _BITSNS
btst.l #6,d0 * [home]
bne check_key_home
move.b #OP_NON,last_op
check_key_rts:
rts
**** ****
check_key_right:
bsr check_exec_scroll_forward
bra check_key_rts
check_key_left:
bsr check_exec_scroll_backward
bra check_key_rts
check_key_down:
bsr check_exec_scroll_fast_forward
bra check_key_rts
check_key_up:
bsr check_exec_scroll_fast_backward
bra check_key_rts
check_key_rollup:
bsr check_exec_page_forward
bra check_key_rts
check_key_rolldown:
bsr check_exec_page_backward
bra check_key_rts
check_key_f1:
moveq.l #$e,d1
IOCS _BITSNS
btst.l #0,d0 * [SHIFT]
bne check_key_edit
bsr check_exec_page_top
bra check_key_rts
check_key_edit:
move.b #QUIT_EDIT,_quit_flag * ò╥ÅW
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_f2:
bsr check_exec_page_end
bra check_key_rts
**** ****
check_key_break:
move.b #QUIT_EXIT,_quit_flag * â}âEâXù╝â{â^âôé¬ëƒé│éΩé─ÅIù╣
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_esc:
move.b #QUIT_ABORT,_quit_flag * ô╟é▌ì₧é▌ÆåÆf
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_undo:
cmpi.b #OP_NON,last_op
bne 9f
move.b #QUIT_RETURN,_quit_flag * éPé┬æOé╔û▀éΘ
9: move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_touroku:
cmpi.b #OP_NON,last_op
bne 9f
move.b #QUIT_TOUROKU,_quit_flag * âAâhâîâXÆáé╔ôoÿ^
9: move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_home:
cmpi.b #OP_NON,last_op
bne 9f
move.b #QUIT_ADDRESSBOOK,_quit_flag * âAâhâîâXÆáé╓
9: move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_clr:
cmpi.b #OP_NON,last_op
bne 9f
moveq.l #$e,d1
IOCS _BITSNS
btst.l #1,d0 * [CTRL]
bne check_key_clr_ctrl
* [CLR] é╠Åêù¥é¬ôⁿéΘù\ÆΦ
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_clr_ctrl: * [CTRL]+[CLR]
move.b #QUIT_REDRAW,_quit_flag * ëµû╩æSì─ò`ëµ
9: move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_shell:
moveq.l #$e,d1
IOCS _BITSNS
btst.l #0,d0 * [SHIFT]
beq check_key_rts
move.b #QUIT_SHELL,_quit_flag * âVâFâï
move.b #OP_OTHERS,last_op
bra check_key_rts
*! debug
check_key_dump:
move.b #QUIT_DUMP,_quit_flag * â_âôâv
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_process:
move.b #QUIT_PROCESS,_quit_flag * PROCESS.X
move.b #OP_OTHERS,last_op
bra check_key_rts
check_key_xf1:
btst.l #6,d0 * [XF2]
beq check_key_rts
move.b #1,_d_option * [XF1]+[XF2] é┼âfâoâbâOâéü[âhé╔
move.b #OP_OTHERS,last_op
bra check_key_rts
*! é▒é▒é▄é┼ debug
*********************************************************
check_exec_scroll_forward:
move.l _disp_xptext,-(sp)
bsr ScrollForward
addq.w #4,sp
move.b #OP_FORWARD,last_op
rts
check_exec_scroll_fast_forward:
move.l _disp_xptext,-(sp)
bsr ScrollFastForward
addq.w #4,sp
move.b #OP_FASTFORWARD,last_op
rts
check_exec_scroll_backward:
move.l _disp_xptext,-(sp)
bsr ScrollBackward
addq.w #4,sp
move.b #OP_BACKWARD,last_op
rts
check_exec_scroll_fast_backward:
move.l _disp_xptext,-(sp)
bsr ScrollFastBackward
addq.w #4,sp
move.b #OP_FASTBACKWARD,last_op
rts
check_exec_page_forward:
cmpi.b #OP_PAGEFORWARD,last_op
bne 1f
subq.b #1,repeat_counter
bne 9f
move.b _key_repeat_2nd,repeat_counter
bra 2f
1: move.b _key_repeat_1st,repeat_counter * éPë±û┌é╔ëƒé│éΩé╜Ä₧
2:
move.l _disp_xptext,-(sp)
bsr PageForward
addq.w #4,sp
9:
move.b #OP_PAGEFORWARD,last_op
rts
check_exec_page_backward:
cmpi.b #OP_PAGEBACKWARD,last_op
bne 1f
subq.b #1,repeat_counter
bne 9f
move.b _key_repeat_2nd,repeat_counter
bra 2f
1: move.b _key_repeat_1st,repeat_counter * éPë±û┌é╔ëƒé│éΩé╜Ä₧
2:
move.l _disp_xptext,-(sp)
bsr PageBackward
addq.w #4,sp
9:
move.b #OP_PAGEBACKWARD,last_op
rts
check_exec_page_top:
cmpi.b #OP_PAGETOP,last_op
beq 9f
move.l _disp_xptext,-(sp)
bsr PageTop
addq.w #4,sp
move.b #OP_PAGETOP,last_op
9: rts
check_exec_page_end:
cmpi.b #OP_PAGEEND,last_op
beq 9f
move.l _disp_xptext,-(sp)
bsr PageEnd
addq.w #4,sp
move.b #OP_PAGEEND,last_op
9: rts
*********************************************************
check_key2: * âLü[ôⁿù═é┼ÄwÆΦé╠âïü[â`âôé╔ò¬è≥
* [ESC] âLü[é╡é⌐â`âFâbâNé╡é╚éóö┼
moveq.l #0,d1
IOCS _BITSNS
btst.l #1,d0 * [ESC]
beq check_key2_rts
move.b #QUIT_ABORT,_quit_flag * ô╟é▌ì₧é▌ÆåÆf
check_key2_rts:
rts
*********************************************************
last_op_continue:
move.b last_op,d0
cmpi.b #OP_FORWARD,d0
beq last_op_forward
cmpi.b #OP_BACKWARD,d0
beq last_op_backward
subq.b #1,last_op_counter * é▒é▒é╔é═ùêé╚éóânâYüiùêé╜éτâoâOüj
last_op_rts:
bra TextVdisp_rts
last_op_forward:
bsr ScrollForward_continue
bra last_op_rts
last_op_backward:
bsr ScrollBackward_continue
bra last_op_rts
*********************************************************
_WaitVdisp2: * è∙é╔âXü[âpü[é╠Ä₧é╠ _WaitVdisp
st.b vdisp_flag
@@: tst.b vdisp_flag
bne @b
rts
****************************************************************
_ClearText: * TEXTVRAM æSëµû╩âNâèâA
movem.l d1-d4/a0-a1,-(sp)
suba.l a1,a1 * âXü[âpü[é╔
IOCS _B_SUPER
move.l d0,-(sp)
move.w CRTC_R21,-(sp)
move.w #%1_11111111,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
lea.l TEXTVRAM,a0
moveq.l #0,d0
moveq.l #128*4/4/4-1,d1
@@: move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
dbra d1,@b
* éáé╞é═âëâXâ^ü[âRâsü[
move.w #1024/4-1,d4
move.w #0<<8|1,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
@@: moveq.l #1,d2 * d2.w = âRâsü[ë±Éö
move.w #%00000000_00001111,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
addq.w #1,d1
dbra d4,@b
move.w (sp)+,CRTC_R21
movea.l (sp)+,a1
IOCS _B_SUPER
movem.l (sp)+,d1-d4/a0-a1
rts
****************************************************************
_ClearText01: * TEXTVRAM 0/1 âyü[âWæSëµû╩âNâèâA
movem.l d1-d4/a0,-(sp)
move.w CRTC_R21,-(sp)
move.w #%1_00110011,CRTC_R21 * âeâLâXâgëµû╩ô»Ä₧âAâNâZâX
lea.l TEXTVRAM,a0
moveq.l #0,d0
moveq.l #128*4/4/4-1,d1
@@: move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
dbra d1,@b
* éáé╞é═âëâXâ^ü[âRâsü[
move.w #1024/4-1,d4
move.w #0<<8|1,d1 * d1.w = ô]æùî│<<8|ô]æùɵ
@@: moveq.l #1,d2 * d2.w = âRâsü[ë±Éö
move.w #%00000000_00000011,d3 * d3.w = âRâsü[ò√îⁿ<<15|âAâNâZâXâvâîü[âô
IOCS _TXRASCPY
addq.w #1,d1
dbra d4,@b
move.w (sp)+,CRTC_R21
movem.l (sp)+,d1-d4/a0
rts
*********************************************************
set_gr_y: * âOâëâtâBâbâNëµû╩é╠âXâNâìü[âïì└òWé≡âZâbâg
* in : d0.w = y ì└òW
movem.l a0,-(sp)
move.w d0,gr_y
swap.w d0
move.w #512-DISP_X_OFFSET,d0 * x ì└òWé═Åφé╔î┼ÆΦÆl
swap.w d0
lea.l CRTC_R12,a0
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
move.l d0,(a0)+
movem.l (sp)+,a0
rts
*********************************************************
get_mouse_pat: * â}âEâXâJü[â\âïé╠ê╩Æué⌐éτâ}âEâXâpâ^ü[âôö╘ìåé≡ô╛éΘ
* üiùßéªé╬âèâôâNé╠Åπé╚éτûεê≤âJü[â\âïüAé╞é⌐üj
* out : d0.w = â}âEâXâpâ^ü[âô No.
* in_link : âèâôâNÅπé╚éτ = !0
movem.l d1-d7/a1-a6,-(sp)
moveq.l #0,d5
move.w _ms_pos_x,d5 * d5.w = x
* â}âEâXâJü[â\âïé¬ì╢Æ[ü^ëEÆ[é╠î┼ÆΦù╠êµé╔éáéΘé⌐üH
cmpi.w #DISP_X_OFFSET,d5
blt get_mouse_pointer * x<8 é╚éτ
cmpi.w #DISP_X_OFFSET+512,d5
bge get_mouse_pointer * x>8+512 é╚éτ
* â}âEâXâJü[â\âïé¬âXâNâìü[âïù╠êµüiâeâLâXâgòöüjé╔
* éáéΘé╠é┼üAâèâôâNé╠Åπé╔éáéΘé⌐é╟éñé⌐â`âFâbâN
moveq.l #0,d1
move.w _ms_pos_y,d1 * d1.w = y
lsr.w #4,d1
movea.l _disp_xptext,a0 * a0.l =
movea.l xptext_line_ptr(a0),a5 * a5.l =
move.l xptext_current_line(a0),d0 * d0.l =
add.l d0,d1 * d1.l = â}âEâXâJü[â\âïé╠éáéΘìsé╠ y
cmp.l xptext_line(a0),d1
bge get_mouse_no_scroll
mulu.w #size_of_line_ptr,d1
adda.w d1,a5 * a5.l = â}âEâXâJü[â\âïé¬éáéΘìsé╠ìsè╟ù¥âeü[âuâï
subi.w #DISP_X_OFFSET,d5
ori.w #$8000,d5 * âhâbâgÉöÉöéªâéü[âhé╔
swap.w d5
move.w #DISP_X_OFFSET,d5
lea.l TEXTVRAM,a2 * òKùvé╚éóé═é╕üiëµû╩é╔ò`é⌐éΩé╜éτâoâOüj
suba.l a3,a3 * üV
bsr draw1
tst.w d0 * âèâôâNÆåüH
beq get_mouse_no_scroll
get_mouse_pointer:
moveq.l #PAT_POINTER,d0
bra get_mouse_pat_rts
get_mouse_no_scroll:
moveq.l #PAT_NO_SCROLL,d0
bra get_mouse_pat_rts
get_mouse_pat_rts:
movem.l (sp)+,d1-d7/a1-a6
rts
*********************************************************
reverse_button: * âeâLâXâgëµû╩é╔ò`é⌐éΩé╜â{â^âôé≡ö╜ô]é╖éΘ
* in : move.l #X0.shl.16+Y0,-(sp)
* move.l #X1.shl.16+Y1,-(sp)
* bsr reverse_button
* lea.l 10(sp),sp
link a6,#0
movem.l d1-d7,-(sp)
move.w CRTC_R21,-(sp) **
clr.w CRTC_R21
move.w 12(a6),d4 * d4.w = X0
move.w 14(a6),d5 * d5.w = Y0
move.w 8(a6),d6 * d6.w = X1
move.w 10(a6),d7 * d7.w = Y1
move.w d6,d2
sub.w d4,d2
addq.w #1,d2 * d2.w = X length
move.w d7,d3
sub.w d5,d3
addq.w #1,d3 * d3.w = Y length
move.w d1,-(sp)
move.w d2,-(sp)
move.w d5,-(sp)
move.w d4,-(sp)
bsr text_xline
addq.w #8,sp
move.w d1,-(sp)
move.w d3,-(sp)
move.w d5,-(sp)
move.w d4,-(sp)
bsr text_yline
addq.w #8,sp
move.w d1,-(sp)
move.w d2,-(sp)
move.w d7,-(sp)
move.w d4,-(sp)
bsr text_xline
addq.w #8,sp
move.w d1,-(sp)
move.w d3,-(sp)
move.w d5,-(sp)
move.w d6,-(sp)
bsr text_yline
addq.w #8,sp
move.w (sp)+,CRTC_R21 **
movem.l (sp)+,d1-d7
unlk a6
rts
text_xline:
link a6,#0
movem.l d1-d7,-(sp)
moveq.l #0,d6
moveq.l #0,d7
move.w 8(a6),d6 * d6.w = X
move.w 10(a6),d7 * d7.w = Y
move.w 12(a6),d5
subq.w #1,d5 * d5.w = length-1
@@:
moveq.l #0,d3
moveq.l #0,d4
move.w d6,d3 * d3.w = X
move.w d7,d4 * d4.w = Y
move.l d3,d0
andi.l #7,d0
moveq.l #7,d1
sub.b d0,d1
moveq.l #0,d0
bset.l d1,d0 * d0.b =
lsr.l #3,d3 * 1byte = 8dot
lsl.l #7,d4
lea.l TEXTVRAM+$2_0000*2,a0
adda.l d3,a0
adda.l d4,a0
eor.b d0,(a0)
addq.w #1,d6
dbra d5,@b
movem.l (sp)+,d1-d7
unlk a6
rts
text_yline:
link a6,#0
movem.l d1/d5-d7,-(sp)
moveq.l #0,d6
moveq.l #0,d7
move.w 8(a6),d6 * d6.w = X
move.w 10(a6),d7 * d7.w = Y
move.w 12(a6),d5
subq.w #1,d5 * d5.w = length-1
move.l d6,d0
andi.l #7,d0
moveq.l #7,d1
sub.b d0,d1
moveq.l #0,d0
bset.l d1,d0 * d0.b =
lsr.l #3,d6 * 1byte = 8dot
lsl.l #7,d7
lea.l TEXTVRAM+$2_0000*2,a0
adda.l d6,a0
adda.l d7,a0
@@: eor.b d0,(a0)
lea.l 128(a0),a0
dbra d5,@b
movem.l (sp)+,d1/d5-d7
unlk a6
rts
*********************************************************
.data
.even
button_table: * â{â^âôé╠ì└òWé╞Åêù¥âAâhâîâX
.dc.w 256+288,96,256+288+59,96+15
.dc.l check_button_scroll
.dc.w 256+288,96+16,256+288+64,96+15+16
.dc.l check_button_page
.dc.w 256+288,96+36,256+288+64,96+15+36
.dc.l check_button_topend
.dc.w 256+448,312,256+448+64,312+15
.dc.l check_button_break
.dc.w 0,0,0,0 * ÅIù╣âRü[âh
.dc.l 0 *
extended_charcter:
* âpâ^ü[âôéO
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01111111_11111110
.dc.w %00000000_00000000
* âpâ^ü[âôéP
.dc.w %00000000_00000000
.dc.w %01111111_11111110
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01000000_00000010
.dc.w %01111111_11111110
.dc.w %00000000_00000000
.bss
.even
_ms_pos: * â}âEâXâJü[â\âïé╠ì└òW
_ms_pos_x: .ds.w 1
_ms_pos_y: .ds.w 1
old_ms_pos: * Æ╝æOé╠â}âEâXâJü[â\âïé╠ì└òW
old_ms_pos_x: .ds.w 1
old_ms_pos_y: .ds.w 1
old_mouse_pat: .ds.w 1 * Æ╝æOé╠â}âEâXâJü[â\âïâpâ^ü[âôö╘ìå
in_vdisp: .ds.b 1 * vdisp Åêù¥ÆåâtâëâO
vdisp_flag: .ds.b 1 * vdisp é▓é╞é╔âNâèâAé│éΩéΘ
last_op: .ds.b 1 * Æ╝æOé╠â}âEâXæÇì∞ôαùe
last_op_counter:.ds.b 1
repeat_counter: .ds.b 1 * âLü[âèâsü[âgùp
.even